package util;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import pojo.Categoria;
import pojo.Console;
import pojo.Jogo;
import pojo.JogoSite;
import pojo.Midia;
import pojo.Moeda;
import pojo.Produtora;
import pojo.Site;

public abstract class Funcoes {

	public static boolean isEmpty (String var){
		if(var != null){
			if(var.trim().length() > 0){
				return true;
			}
		}
		return false;
	}

	public static String objectToString(Object o) {
		if(o != null){
			if(o instanceof Console){
				return consoleToString((Console) o);
			}else if(o instanceof Produtora){
				return produtoraToString((Produtora) o);
			}else if(o instanceof Categoria){
				return categoriaToString((Categoria) o);
			}else if(o instanceof Jogo){
				return jogoToString((Jogo) o);
			}else if(o instanceof Midia){
				return midiaToString((Midia) o);
			}else if(o instanceof Site){
				return siteToString((Site) o);
			}else if(o instanceof JogoSite){
				return jogoSiteToString((JogoSite) o);
			}else if(o instanceof Moeda){
				return moedaToString((Moeda) o);
			}else{
				return o.getClass().getName();
			}
		}else{
			return "";
		}
	}

	private static String moedaToString(Moeda o) {
		StringBuffer sb = new StringBuffer("Moeda|");
		sb.append("idMoeda="+o.getIdMoeda()+"|");
		sb.append("nome="+o.getNome()+"|");
		sb.append("valorReal="+o.getValorReal()+"|");
		return sb.toString();
	}

	private static String jogoSiteToString(JogoSite o) {
		StringBuffer sb = new StringBuffer("JogoSite|");
		sb.append("site="+o.getSite().getIdSite()+"-"+o.getSite().getNome()+"|");
		sb.append("jogo="+o.getJogo().getIdJogo()+"-"+o.getJogo().getNome()+"|");
		sb.append("valor="+o.getValor()+"|");
		sb.append("jogo="+o.getMoeda().getIdMoeda()+"-"+o.getMoeda().getNome()+"|");
		sb.append("usado="+o.getUsado()+"|");
		return sb.toString();
	}

	private static String siteToString(Site o) {
		StringBuffer sb = new StringBuffer("Site|");
		sb.append("idSite="+o.getIdSite()+"|");
		sb.append("nome="+o.getNome()+"|");
		sb.append("endereco="+o.getEndereco()+"|");
		return sb.toString();
	}

	private static String midiaToString(Midia o) {
		StringBuffer sb = new StringBuffer("Midia|");
		sb.append("idJogo="+o.getIdMidia()+"|");
		sb.append("dataCompra="+o.getDataCompra()+"|");
		sb.append("valorCompra="+o.getValorCompra()+"|");
		sb.append("dataVenda="+o.getDataVenda()+"|");
		sb.append("valorVenda="+o.getValorVenda()+"|");
		sb.append("valorFrete="+o.getValorFrete()+"|");
		sb.append("jogo="+o.getJogo().getIdJogo()+"-"+o.getJogo().getNome()+"|");
		return sb.toString();
	}

	private static String jogoToString(Jogo o) {
		StringBuffer sb = new StringBuffer("Jogo|");
		sb.append("idJogo="+o.getIdJogo()+"|");
		sb.append("nome="+o.getNome()+"|");
		sb.append("descricao="+o.getDescricao()+"|");
		sb.append("numJogadores="+o.getNumJogadores()+"|");
		sb.append("numJogadoresOnline="+o.getNumJogadoresOnline()+"|");
		sb.append("ano="+o.getAno()+"|");
		sb.append("rating="+o.getRating()+"|");
		sb.append("console="+o.getConsole().getIdConsole()+"-"+o.getConsole().getNome()+"|");
		sb.append("produtora="+o.getProdutora().getIdProdutora()+"-"+o.getProdutora().getNome()+"|");
		return sb.toString();
	}

	private static String categoriaToString(Categoria o) {
		StringBuffer sb = new StringBuffer("Categoria|");
		sb.append("idCategoria="+o.getIdCategoria()+"|");
		sb.append("nome="+o.getNome()+"|");
		return sb.toString();
	}

	private static String produtoraToString(Produtora o) {
		StringBuffer sb = new StringBuffer("Produtora|");
		sb.append("idProdutora="+o.getIdProdutora()+"|");
		sb.append("nome="+o.getNome()+"|");
		return sb.toString();
	}

	private static String consoleToString(Console o) {
		StringBuffer sb = new StringBuffer("Console|");
		sb.append("idConsole="+o.getIdConsole()+"|");
		sb.append("nome="+o.getNome()+"|");
		sb.append("ano="+o.getAno()+"|");
		return sb.toString();
	}

	public static void adicionarMensagem(String texto) {
		FacesContext.getCurrentInstance().addMessage("erro", new FacesMessage(texto));
	}

}
